'use strict'

const path = require('path')
const { Sequelize } = require('sequelize')

module.exports = {
    port: 3001,
    // 中间件列表
    middleware: ['error_handler', 'jwt', 'test'],
    // 中间件黑名单
    middlewareIgnore: {
        jwt: /(login|register|upload)/
    },
    baseDir: process.cwd(),
    // 静态资源
    staticPath: path.resolve(__dirname, '../static'),
    security: {
      csrf: {
        enable: false,
        queryName: '_csrf', // 通过 query 传递 CSRF token 的默认字段为 _csrf
        bodyName: '_csrf', // 通过 body 传递 CSRF token 的默认字段为 _csrf
        useSession: false, // 默认为 false，当设置为 true 时，将会把 csrf token 保存到 Session 中
        cookieName: 'csrfToken', // Cookie 中的字段名，默认为 csrfToken
        sessionName: 'csrfToken', // Session 中的字段名，默认为 csrfToken
      },
      cryptoKey: 'Vue3.0_egg_admin_server' // 密码加密盐值
    },
    mysql: {
      // 单数据库信息配置
      client: {
        // host
        host: 'localhost',
        // 端口号
        port: '3306',
        // 用户名
        user: 'root',
        // 密码
        password: '123456789',
        // 数据库名
        database: 'vue3_egg_mall',
      },
      // 是否加载到 app 上，默认开启
      app: true,
      // 是否加载到 agent 上，默认关闭
      agent: false,
    },
    sequelize: new Sequelize('vue3_egg_mall', 'root', '123456789', {
        host: 'localhost',
        dialect: 'mysql',
        timezone: '+08:00',
        define: {
            timestamps: true,
            // 停止 Sequelize 执行自动复数化
            freezeTableName: true,
            underscored: true // createdAt驼峰转下划线
        },
        dialectOptions: {
            // 日期格式化，默认格式YYYY-MM-DD hh:mm:ss，也可以在model里通过get添加格式化
            dateStrings: true,
            typeCast(field, next) {
              if (field.type === "DATETIME") {
                return field.string()
              }
              return next()
            }
          }
    })
}